﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using Fiuba.Algo3.Titiritero;

namespace BattleCity
{
    public class Escenario
    {
        
        //Propiedades
        public Objetos Objetos
        {
            get;
            private set;
        }
        public IFigura Terreno
        {
            get;
            set;
        }
        
        //Constructor
        private Escenario()
        {
            this.Objetos = new Objetos();
            this.Terreno = new Rectangulo(new Point(0,0),500,500);
            
        }
        private static Escenario escenario = null;
        public static Escenario getEscenario()
        {
            if (escenario == null)
            {
                escenario = new Escenario();
            }
            return escenario;
        }

        //Metodos
        //chequea que el objeto no se haya ido de la superficie del terreno
        public bool PosicionInvalida(Objeto objeto)
        {
            return !this.Terreno.Contiene(objeto.Figura);
        }

        //A partir de un objeto, recorre todos los objetos del escenario haciendo que se pregunten si se impactaron
        public bool DetectarImpacto(Objeto objeto)
        {
            if (this.PosicionInvalida(objeto))
            {
                objeto.FueraDelTerreno();
                return true;
            }
            int i = 0;
            int count = Objetos.Items.Count;
            while (i < count)
            {
                if (objeto.ImpactaContra((Objeto)this.Objetos.Items[i]))
                {
                    return true;
                }

                i++;
                if (count > Objetos.Items.Count)
                {
                    count = Objetos.Items.Count;
                }
            }
            return false;
        }
    
    
    }

}
